<?php

abstract class Singleton {

    protected static $_instance = NULL;

    final public static function getInstance(){
        if(null !== static::$_instance){
            return static::$_instance;
        }
        static::$_instance = new static();
        static::$_instance->initialize();
        return static::$_instance;
    }

    final private function  __construct() { }

    final private function  __clone() { }

    public function initialize() { }

}